// pages/activity/index.js
Page({
  data: {
    navBarHeight: 0, // 导航栏总高度 = 状态栏高度 + 导航栏高度
    contentTop: 0, // 内容区域top位置
    
    // 活动分类列表 - 动态从数据库获取
    categoryList: [
      { id: 'all', name: '全部' }
    ],
    
    // 当前选中的分类
    selectedCategory: 'all',
    
    // 活动列表数据 - 瀑布流测试版（不同高度图片）
    // 活动列表数据 - 从云数据库获取
    activityList: [],
    
    // 分页相关
    currentPage: 0,
    pageSize: 10,
    hasMoreData: true,
    isLoading: false
  },

  onLoad() {
    console.log('Activity页面加载');
    
    // 计算导航栏高度
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight
    const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
    
    const filterHeight = 64 // 筛选栏完整高度 = 内容44px + 上下padding各10px
    const spacing = 0 // 筛选栏紧挨navbar，无间距
    
    this.setData({
      navBarHeight,
      contentTop: navBarHeight + filterHeight + spacing
    })
    
    // 加载活动类型和活动数据
    this.loadActivityTypes()
    this.loadActivities()
  },

  /**
   * 加载活动类型列表
   */
  async loadActivityTypes() {
    try {
      console.log('开始获取活动类型...')
      
      const result = await wx.cloud.callFunction({
        name: 'getActivityTypes',
        data: {}
      })

      console.log('活动类型获取结果：', result)

      if (result.result && result.result.success) {
        const categoryList = result.result.data || [{ id: 'all', name: '全部' }]
        
        this.setData({
          categoryList: categoryList
        })

        console.log('活动类型加载成功，共', categoryList.length, '个类型')
      } else {
        console.error('活动类型获取失败：', result.result?.message || '未知错误')
        // 使用默认分类列表
        this.setData({
          categoryList: [{ id: 'all', name: '全部' }]
        })
      }
    } catch (error) {
      console.error('加载活动类型出错：', error)
      // 使用默认分类列表
      this.setData({
        categoryList: [{ id: 'all', name: '全部' }]
      })
    }
  },

  /**
   * 加载活动数据
   */
  async loadActivities(isRefresh = false) {
    if (this.data.isLoading) return
    
    try {
      this.setData({ isLoading: true })
      
      if (isRefresh) {
        this.setData({
          currentPage: 0,
          hasMoreData: true,
          activityList: []
        })
      }
      
      if (!this.data.hasMoreData && !isRefresh) {
        console.log('没有更多数据了')
        return
      }

      const result = await wx.cloud.callFunction({
        name: 'getActivities',
        data: {
          category: this.data.selectedCategory,
          limit: this.data.pageSize,
          skip: this.data.currentPage * this.data.pageSize,
          orderBy: 'createdAt',
          orderType: 'desc'
        }
      })

      console.log('活动数据获取结果：', result)

      if (result.result && result.result.success) {
        const newActivities = result.result.data || []
        
        // 为每个活动添加一个唯一的 id
        const processedActivities = newActivities.map(activity => ({
          ...activity,
          id: activity._id || activity.id
        }))

        let updatedList = []
        if (isRefresh) {
          updatedList = processedActivities
        } else {
          updatedList = [...this.data.activityList, ...processedActivities]
        }

        this.setData({
          activityList: updatedList,
          currentPage: this.data.currentPage + 1,
          hasMoreData: newActivities.length === this.data.pageSize
        })

        console.log('活动数据加载成功，当前共', updatedList.length, '个活动')
      } else {
        console.error('活动数据获取失败：', result.result?.message || '未知错误')
        wx.showToast({
          title: '活动数据加载失败',
          icon: 'none',
          duration: 2000
        })
      }
    } catch (error) {
      console.error('加载活动数据出错：', error)
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none',
        duration: 2000
      })
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 搜索按钮点击事件
  onSearch() {
    wx.navigateTo({
      url: '/pages/search/index'
    })
  },

  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 1
      });
    }
  },

  // 分类筛选点击事件
  onCategoryTap(e) {
    const category = e.currentTarget.dataset.category;
    
    if (category === this.data.selectedCategory) {
      return // 如果点击的是当前已选中的分类，则不做任何操作
    }
    
    this.setData({
      selectedCategory: category
    });
    
    // 重新加载该分类的活动数据
    this.loadActivities(true)
    
    const categoryName = this.data.categoryList.find(item => item.id === category)?.name
    wx.showToast({
      title: `已切换到: ${categoryName}`,
      icon: 'none',
      duration: 1500
    });
  },

  // 瀑布流活动卡片点击事件
  onActivityCardTap(e) {
    const { item } = e.detail;
    const activityId = item._id || item.id;
    console.log('点击活动卡片，ID:', activityId);
    
    if (!activityId) {
      wx.showToast({
        title: '活动信息错误',
        icon: 'none',
        duration: 2000
      })
      return
    }
    
    wx.navigateTo({
      url: `/pages/activity_detail/index?id=${activityId}`,
      success: () => {
        console.log('成功跳转到活动详情页');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 2000
        })
      }
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    console.log('触底加载更多')
    this.loadActivities(false)
  },

  /**
   * 用户下拉刷新
   */
  onPullDownRefresh() {
    console.log('下拉刷新')
    this.loadActivities(true).finally(() => {
      wx.stopPullDownRefresh()
    })
  }
})